<?php

/**
 * @author Paweł Napieracz
 * @version 1.0
 */
class Modul_Admin_Uzytkownik_Lista extends Modul_Admin_Abstract {

    public function inicjalizuj() {
        $this->tytul = 'Lista użytkowników';

        if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'xml') {
            $this->xml();
        }
    }
    
    public function prawa() {
        if (isset($this->uzytkownik['uprawienia']) &&
                !in_array('cms_zarzadzanie_uzytkownicy', $this->uzytkownik['uprawienia'])) {
            $this->zakoncz('/cms/logowanie/akcja,blad,info,3.html');
        }
        parent::prawa();
    }

    private function xml() {
        $tab = new AutoDB('uzytkownik');
        $grid = new Helper_FlexiGridJSON(); //stworzenie obiektu Grida
        //ustawienie warunków zapytania
        $where = $grid->getPrzeszukaj();

        //ustawienie ilości wszystkich rekordów, aby można było wyliczyć liczbę
        //dostępnych stron
        $grid->setWszystkie($tab->Select('Count(*) as Count')
                        ->Join('cms_grupy', 'uzytkownik.id_grupa = cms_grupy.id')
                        ->Like($where)->GetFirst()->Count);

        //zapytanie o wyniki do wyświetlenia
        $wyniki = $tab->Select('uzytkownik.id, nazwa, login, mail, ostatnie_logowanie, status')
                ->Join('cms_grupy', 'uzytkownik.id_grupa = cms_grupy.id')
                ->Like($where)
                ->OrderBy($grid->getSortowanie())
                ->Limit($grid->getLimitIle(), $grid->getLimitOd())
                ->Run();

        //kodowanie do formatu JSON
        $grid->kodujWlasnyJSON($this->kodujJSON($wyniki, array('id',
                    'nazwa', 'login', 'mail', 'ostatnie_logowanie', 'status')));
        die();
    }

    private function kodujJSON($rekordy, $pola) {
        $dane = array();
        if ($rekordy !== false) {
            foreach ($rekordy as $v) {
                $komorki = array();
                //komórki
                foreach ($pola as $pole) {
                    if ($pole != 'status') {
                        $komorki[] = $v->$pole;
                    } else {
                        switch ($v->$pole) {
                            case 0:
                                $komorki[] = 'usunięty';
                                break;
                            case 1:
                                $komorki[] = 'aktywny';
                                break;
                            case 2:
                                $komorki[] = 'nieaktywny';
                                break;
                            case 3:
                                $komorki[] = 'zbanowany';
                                break;
                            default:
                                $komorki[] = 'nieokreślony';
                                break;
                        }
                    }
                }
                //
                $dane[] = array(
                    'id' => $v->id,
                    'cell' => $komorki
                );
            }
        }
        return $dane;
    }

}

?>
